#include "graph.h"
#include<bits/stdc++.h>
using namespace std;
const int N=205;

int e[N][N],len[N],idx,ans[N],dis[N][N],s[N],tp,now,bk[N];

void dfs(int lstp,int lstc){
    if(Color()==2){
        Move(LastRoad(),2);
        return;
    }
    if(Color()==1){
        ++idx;
        if(idx>1) s[++tp]=lstc;
        e[lstp][lstc]=idx;
        if(idx>1) e[idx][LastRoad()]=lstp,bk[idx]=LastRoad();
        len[idx]=NumberOfRoads();
        int p=idx;
        int h;
        if(p>1) h=LastRoad();
        for(int i=1;i<=len[p];i++){
            Move(i,2);
            dfs(p,i);
        }
        if(p>1) Move(h,2);
        return;
    }
}

void Inspect(int R) {
    dfs(0,0);
    for(int i=1;i<=idx;i++){
        for(int j=1;j<i;j++)
            Move(s[j],2);
        if(i==idx){
            Move(bk[i],3);
            Move(s[i-1],2);
        }
        else{
            Move(s[i],3);
            Move(bk[i+1],2);
        }
        for(int j=i;j>1;j--){
            if(j==i) Move(bk[j],3);
            else Move(bk[j],2);
        }
        for(int j=1;j<=idx;j++){
            if(j!=i){
                for(int k=1;k<=len[j];k++){
                    if(e[j][k]) continue;
                    Move(k,2);
                    if(Color()==3){
                        e[j][k]=i;
                        e[i][LastRoad()]=j;
                        Move(LastRoad(),3);
                    }
                    else{
                        Move(LastRoad(),2);
                    }
                }
            }
            if(j!=idx) Move(s[j],(j==i)?(3):(2));
        }
        for(int j=idx;j>1;j--)  Move(bk[j],2);
    }
    for(int i=1;i<=idx;i++)
        for(int j=1;j<=idx;j++)
            dis[i][j]=1e9;
    for(int i=1;i<=idx;i++)
        for(int j=1;j<=len[i];j++)
            dis[i][e[i][j]]=dis[e[i][j]][i]=1;
    for(int i=1;i<=idx;i++) dis[i][i]=0;
    for(int i=1;i<=idx;i++)
        for(int j=1;j<=idx;j++)
            for(int k=1;k<=idx;k++)
                dis[j][k]=min(dis[j][k],dis[j][i]+dis[i][k]);
    for(int i=1;i<=idx;i++)
        for(int j=i+1;j<=idx;j++)
            if(dis[i][j]<=R) ans[dis[i][j]]++;
    for(int i=1;i<=R;i++)
        Answer(i,ans[i]);
}
